/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.eps.tesoreria.Entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.eps.entity.Localidad;
import com.eps.entity.Tipo;
import com.eps.entity.Zona;

/**
 *
 * @author Luis_Angel
 */
@Entity
@Table(name = "detalle_comprobante_caja")
@NamedQueries({
    @NamedQuery(name = "DetalleComprobanteCaja.findAll", query = "SELECT d FROM DetalleComprobanteCaja d"),
    @NamedQuery(name = "DetalleComprobanteCaja.findByIdComprobanteCaja", query = "SELECT d FROM DetalleComprobanteCaja d WHERE d.detalleComprobanteCajaPK.idComprobanteCaja = :idComprobanteCaja"),
    @NamedQuery(name = "DetalleComprobanteCaja.findByCorrelativo", query = "SELECT d FROM DetalleComprobanteCaja d WHERE d.detalleComprobanteCajaPK.correlativo = :correlativo"),
    @NamedQuery(name = "DetalleComprobanteCaja.findByDescripcion", query = "SELECT d FROM DetalleComprobanteCaja d WHERE d.descripcion = :descripcion"),
    @NamedQuery(name = "DetalleComprobanteCaja.findByImporte", query = "SELECT d FROM DetalleComprobanteCaja d WHERE d.importe = :importe"),
    @NamedQuery(name = "DetalleComprobanteCaja.findByNroDocumento", query = "SELECT d FROM DetalleComprobanteCaja d WHERE d.nroDocumento = :nroDocumento")})
public class DetalleComprobanteCaja implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected DetalleComprobanteCajaPK detalleComprobanteCajaPK;
    @Column(name = "descripcion")
    private String descripcion;
    @Column(name = "importe")
    private BigDecimal importe;
    @Column(name = "nro_documento")
    private String nroDocumento;
    @OneToMany( mappedBy = "detalleComprobanteCaja")
    private List<DetalleComprobanteCajaAsiento> detalleComprobanteCajaAsientoList;
    @JoinColumn(name = "id_asiento_tipo", referencedColumnName = "id_asiento_tipo", nullable = true)
    @ManyToOne
    private AsientoTipo idAsientoTipo;
    @JoinColumn(name = "id_comprobante_caja", referencedColumnName = "id_comprobante_caja", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private ComprobanteCaja comprobanteCaja;
    @JoinColumn(name = "tipo_documento", referencedColumnName = "id_tabla_tipo")
    @ManyToOne
    private Tipo tipoDocumento;
    @Column(name = "codPlanillaPago")
    private String codPlanillaPago;
    @Column(name = "codDetallePlanillaPago")
    private int codDetallePlanillaPago;
    @JoinColumn(name = "id_localidad", referencedColumnName = "id_localidad")
    @ManyToOne
    private Localidad idLocalidad;
    @JoinColumn(name = "id_zona", referencedColumnName = "id_zona")
    @ManyToOne
    private Zona idZona;
    @Column(name = "estado")
    private int estado;
    @Column(name = "pagoCuenta")
    private int pagoCuenta;
    @Column(name = "observacion")
    private String observacion;
    @Column(name = "fecha_deposito")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecha_deposito;
    
    @Column(name = "nit")
    private String nit;
    @Column(name = "estadoDetalleComprobante")
    private int estadoDetalleComprobante;
    @Column(name = "id_comprobante_ref")
    private String id_comprobante_ref;
    @Column(name = "corr_comprobante_ref")
    private int corr_comprobante_ref;

    public DetalleComprobanteCaja() {
    }

    public DetalleComprobanteCaja(DetalleComprobanteCajaPK detalleComprobanteCajaPK) {
        this.detalleComprobanteCajaPK = detalleComprobanteCajaPK;
    }

    public DetalleComprobanteCaja(String idComprobanteCaja, int correlativo) {
        this.detalleComprobanteCajaPK = new DetalleComprobanteCajaPK(idComprobanteCaja, correlativo);
    }

    public DetalleComprobanteCajaPK getDetalleComprobanteCajaPK() {
        return detalleComprobanteCajaPK;
    }

    public void setDetalleComprobanteCajaPK(DetalleComprobanteCajaPK detalleComprobanteCajaPK) {
        this.detalleComprobanteCajaPK = detalleComprobanteCajaPK;
    }
 
    public String getNit() {
		return nit;
	}

	public void setNit(String nit) {
		this.nit = nit;
	}

	public int getEstadoDetalleComprobante() {
		return estadoDetalleComprobante;
	}

	public void setEstadoDetalleComprobante(int estadoDetalleComprobante) {
		this.estadoDetalleComprobante = estadoDetalleComprobante;
	}

	public String getId_comprobante_ref() {
		return id_comprobante_ref;
	}

	public void setId_comprobante_ref(String idComprobanteRef) {
		id_comprobante_ref = idComprobanteRef;
	}

	public int getCorr_comprobante_ref() {
		return corr_comprobante_ref;
	}

	public void setCorr_comprobante_ref(int corrComprobanteRef) {
		corr_comprobante_ref = corrComprobanteRef;
	}

	public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public BigDecimal getImporte() {
        return importe;
    }

    public void setImporte(BigDecimal importe) {
        this.importe = importe;
    }

    public String getNroDocumento() {
        return nroDocumento;
    }

    public void setNroDocumento(String nroDocumento) {
        this.nroDocumento = nroDocumento;
    }

    public List<DetalleComprobanteCajaAsiento> getDetalleComprobanteCajaAsientoList() {
        return detalleComprobanteCajaAsientoList;
    }

    public void setDetalleComprobanteCajaAsientoList(List<DetalleComprobanteCajaAsiento> detalleComprobanteCajaAsientoList) {
        this.detalleComprobanteCajaAsientoList = detalleComprobanteCajaAsientoList;
    }

    public AsientoTipo getIdAsientoTipo() {
        return idAsientoTipo;
    }

    public void setIdAsientoTipo(AsientoTipo idAsientoTipo) {
        this.idAsientoTipo = idAsientoTipo;
    }

    public ComprobanteCaja getComprobanteCaja() {
        return comprobanteCaja;
    }

    public void setComprobanteCaja(ComprobanteCaja comprobanteCaja) {
        this.comprobanteCaja = comprobanteCaja;
    }

    public Tipo getTipoDocumento() {
        return tipoDocumento;
    }

    public void setTipoDocumento(Tipo tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    public int getCodDetallePlanillaPago() {
        return codDetallePlanillaPago;
    }

    public void setCodDetallePlanillaPago(int codDetallePlanillaPago) {
        this.codDetallePlanillaPago = codDetallePlanillaPago;
    }

    public String getCodPlanillaPago() {
        return codPlanillaPago;
    }

    public void setCodPlanillaPago(String codPlanillaPago) {
        this.codPlanillaPago = codPlanillaPago;
    }

    public Localidad getIdLocalidad() {
        return idLocalidad;
    }

    public void setIdLocalidad(Localidad idLocalidad) {
        this.idLocalidad = idLocalidad;
    }

    public Zona getIdZona() {
        return idZona;
    }

    public void setIdZona(Zona idZona) {
        this.idZona = idZona;
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }

    public int getPagoCuenta() {
        return pagoCuenta;
    }

    public void setPagoCuenta(int pagoCuenta) {
        this.pagoCuenta = pagoCuenta;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public Date getFecha_deposito() {
        return fecha_deposito;
    }

    public void setFecha_deposito(Date fecha_deposito) {
        this.fecha_deposito = fecha_deposito;
    }
    

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (detalleComprobanteCajaPK != null ? detalleComprobanteCajaPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DetalleComprobanteCaja)) {
            return false;
        }
        DetalleComprobanteCaja other = (DetalleComprobanteCaja) object;
        if ((this.detalleComprobanteCajaPK == null && other.detalleComprobanteCajaPK != null) || (this.detalleComprobanteCajaPK != null && !this.detalleComprobanteCajaPK.equals(other.detalleComprobanteCajaPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "tesoreria.ejb30.entity.DetalleComprobanteCaja[detalleComprobanteCajaPK=" + detalleComprobanteCajaPK + "]";
    }

}
